# 内置函数
# 查看使用的内置函数
# import builtins
# print(dir(builtins))
from functools import reduce

# 1、map(函数，对象）：对象每一个元素都会去执行一次这个函数
# 定义一个列表
li = [1,2,3]
# 定义的函数
# def funa(li):  # funa的作用是可以计算任何一个数据的乘
#     return li * 3
# mp = map(funa, li)    # 将传入的变量funa函数依次作用到了li列表中的每一个元素上
# print(mp)    # 迭代器对象
# print(list(mp))  # 得到一个新列表

# 2、reduce(函数，对象): 先把对象中前面两个元素取出，计算出一个值然后保存者，接下来把这个值跟第三个元素进行累加
# reduce函数不是内置函数，而是在模块functools中的函数
# from 模块名 import 函数
# from functools import reduce
# list2 = [1,2,3,4]
# # 注意： 函数要是两个参数的函数，对象必须是可迭代对象
# def add(x,y): # add的作用任意两个数字进行累加的效果
#     return x + y
#
# res = reduce(add, list2)
# print(res)

# 3、filter（判断函数，对象）：用于过滤序列，过滤掉不符合条件因素的元素，返回的是filter，返回符合条件元素组成的新列表
list3 = [1,2,3,4,5,6,7,8,9,10]
# 需求：过滤掉序列中的奇数
def funa(list3):  # funa的作用可以取奇数
    return list3 % 2 == 1

res = filter(funa, list3)
print(res) # 返回的是可迭代对象
print(list(res))
